package main

import "fmt"

// 变量声明
func variableDeclarations() {
	// 标准声明
	var say1 string
	var date1 string

	// 批量声明
	var (
		name1 string
		age1  int
	)

	say1 = "good go"
	date1 = "2025-05-17"
	name1 = "Any"
	age1 = 19
	fmt.Println(say1+" "+date1+" "+name1+" ", age1)

}

// 类型推导与短变量声明
func typeDerivationAndShortVariableDeclarations() {
	var name2 = "pprof.cn"
	var sex2 = 1
	school := "四川化工职业技术学院"
	sex3 := "男"
	show := "name：%s,性别：%d\n学校：%s,性别：%s\n"
	fmt.Printf(show, name2, sex2, school, sex3)
}

// 匿名变量
func foo() (int, string) {
	return 10, "Q1mi"
}

func main() {

	variableDeclarations()
	typeDerivationAndShortVariableDeclarations()
	x, _ := foo() // 匿名变量用下划线表示
	_, y := foo() // 匿名变量不占用命名空间，不会分配内存，所以匿名变量之间不存在重复声明。 (在Lua等编程语言里，匿名变量也被叫做哑元变量。)
	fmt.Println("x=", x)
	fmt.Println("y=", y)

	// 常量
	const pi = 3.1415
	const e = 2.7182
	fmt.Printf("pi:%.2f e:%.2f \n", pi, e)

	// iota是go语言的常量计数器，只能在常量的表达式中使用。
	// iota在const关键字出现时将被重置为0
	const (
		n1 = iota //0
		n2        //1
		n3        //2
		n4        //3
	)
	fmt.Printf("n1:%d n2:%d n3:%d n4:%d \n", n1, n2, n3, n4)
}
